package cn.itcast.crm.service;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import cn.itcast.crm.domain.Customer;

//客户SEI接口
@Path("/customers")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) // 消费的mime类型
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) // 生产者的mime类型（响应回去的表述格式）
public interface CustomerService {
	/**
	 * 说明：查询没有关联定区的客户列表
	 * 
	 * @return
	 * @author hjw
	 * @time：2017年10月23日 上午12:24:00
	 */
	@Path("/nofixedarea")
	@GET
	public List<Customer> findCustomerListNoFixedAreaId();

	/**
	 * 说明：根据定区编号来查询客户列表
	 * 
	 * @param fixedAreaId
	 * @return
	 * @author hjw
	 * @time：2017年10月23日 上午12:42:08
	 */
	@Path("/fixedAreaId/{fixedAreaId}")
	@GET
	public List<Customer> findCustomerListByFixedAreaId(@PathParam("fixedAreaId") String fixedAreaId);

	/**
	 * 说明：根据客户编号列表来批量更新定区编号
	 * 
	 * @param fixedAreaId
	 * @param customerIds
	 * @author hjw
	 * @time：2017年10月23日 上午12:42:14
	 */
	@Path("/fixedAreaId/{fixedAreaId}/{customerIds}")
	@PUT
	public void updateFixedAreaIdByCustomerIds(@PathParam("fixedAreaId") String fixedAreaId, @PathParam("customerIds") String customerIds);

	/**
	 * 说明：保存一个客户
	 * 
	 * @param customer
	 * @author hjw
	 * @time：2017年10月24日 下午8:51:53
	 */
	@POST
	@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) // 消费的mime类型
	public void saveCustomer(Customer customer);

	/**
	 * 说明：更新类型通过手机号码
	 * 
	 * @param mobilePhone
	 * @param type
	 * @author hjw
	 * @time：2017年10月26日 上午10:38:51
	 */
	@Path("/type/{mobilePhone}/{type}")
	@PUT
	public void updateTypeByMobilePhone(@PathParam("mobilePhone") String mobilePhone, @PathParam("type") Integer type);

	/**
	 * 说明：根据客户地址查询定区编号
	 * 
	 * @param address
	 * @return
	 * @author hjw
	 * @time：2017年10月28日 下午8:43:27
	 */
	@Path("/fixedAreaId/address/{address}")
	@GET
	// @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
	// @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
	public Customer findFixedAreaIdByAddress(@PathParam("address") String address);

}
